# -*- coding: utf-8 -*-
# @Author   : zxc19
# @Time     : 2023/7/6 19:55
# @FileName : conf.py
# @Desc     : 请输入功能模块描述
import os
from pathlib import Path

from pydantic import BaseSettings

base_dir = Path(__file__).absolute().parent.parent


class Settings(BaseSettings):
    class Config:
        # 环境变量文件
        env_file: str = base_dir.joinpath(".env.prod" if os.getenv('PROJECT_ENV') == 'prod' else ".env.dev")

    # 项目名称（截图、测试结果、报告都会存储到该路径下。如果没有，就在对应目录的TMP目录下）
    PROJECT_NAME: str = 'WEB-UI测试'
    BASE_URL: str = 'https://127.0.0.1'
    USE_SSH: bool = False
    SSH_PORT: int = 22
    SSH_USERNAME: str = 'root'
    SSH_PASSWORD: str = '123456'

    # ===================================各类路径设置============================================
    # 项目根目录
    BASE_DIR: Path = base_dir
    # 报告目录
    REPORT_DIR: Path = BASE_DIR.joinpath('report').joinpath('html')
    # pytest测试结果目录
    RESULT_DIR: Path = BASE_DIR.joinpath('report').joinpath('xml')
    # 报告的压缩文件
    REPORT_ZIP_DIR: Path = BASE_DIR.joinpath('report_zip')
    # 屏幕截图目录
    SCREENSHOT_DIR: Path = BASE_DIR.joinpath('screenshot')
    # 日志目录
    LOG_DIR: Path = BASE_DIR.joinpath('logs')
    # 页面目录
    PAGE_DIR: Path = BASE_DIR.joinpath('test_page')
    # 业务场景目录
    BUSINESS_DIR: Path = BASE_DIR.joinpath('test_business')
    # 测试用例目录
    TEST_CASE_DIR: Path = BASE_DIR.joinpath('test_case')
    # 测试数据目录
    TEST_DATA_DIR: Path = BASE_DIR.joinpath('test_data')
    # 测试文件目录
    TEST_FILE_DIR: Path = BASE_DIR.joinpath('test_file')
    # 认证文件保存目录
    AUTH_DIR: Path = BASE_DIR.joinpath('test_auth')

    # 是否截图和trace保存在本地,不保存到本地也可以直接塞到报告中去的
    SCREENSHOT_AND_TRACE_SAVE_IN_LOCAL: bool = False

    # ===================================测试录制追踪器设置============================================
    # 跟踪结果可以使用Chrome DevTools等工具进行分析和可视化（playwright show-trace trace.zip）
    TRACE_SNAPSHOTS: bool = False  # 指定是否要记录页面快照
    TRACE_SCREENSHOTS: bool = True  # 指定是否要记录页面截图
    TRACE_SOURCES: bool = True  # 指定是否要记录页面源代码

    # ===================================邮箱设置============================================
    EMAIL_START: bool = False  # 是否启用邮箱
    EMAIL_SMTP_SERVER: str = 'smtp.163.com'
    EMAIL_SMTP_PORT: int = 25
    EMAIL_USER: str = 'my_prayers@163.com'
    EMAIL_USER_PASSWORD: str = 'RWQBLBVTKGJCJTUR'
    EMAIL_RECV_USER: str = '2622169554@qq.com'

    # ===================================压缩设置============================================
    REPORT_ZIP_START: bool = False  # 是否压缩报告和结果

    # 变量池子
    G_VAR_POOL: dict = {}
